Media programs, including audio-video data, are increasingly distributed over telecommunications networks for the viewing and enjoyment of users. Services provide media programs to users through various video delivery technologies (e.g., streaming). For example, the service may allow a user to view the latest television shows or movies through a web portal using a media player. After a television show airs, the service may experience a high demand for the television show. In one example, a media program provider provides the television show to the service. The service then needs to transcode the television show before the service can make the television show available to the users. For example, the television show may need to be transcoded into different bitrates. Due to the popularity of the video, the service would like to transcode the media program as fast as possible. However, if the transcoding is performed by one encoder, the service must wait until the encoder finishes transcoding the entire television show to before making the television show available to users.
One way of transcoding the media program faster is to splice the media program into multiple parts and transcode the media program using multiple encoders. Thus, the encoding can be performed in parallel and the encoded parts from the encoders are combined into a file. Typically, the splicing of the media program into multiple parts is performed based on time. For example, the media program may be spliced every 5 seconds. This may encode the media program faster, but the splicing may not be optimal because encoding a picture of video depends on other parts of the video. For example, motion estimation and motion compensation leverage the use of already encoded pictures, such as reference pictures. If arbitrary splices are used, then one part of video that is sent to one encoder may not be optimal because references pictures that should be encoded with pictures of that part may have been sent to another encoder.